using System;
using System.Runtime.CompilerServices;
using Dimok.Data;

namespace Dimok.Config{

	#region application/(Lock) ======================
	public class application : RegistryBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the application space. </summary>
		///
		/// <value>	The application space. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string AppSpace{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the groups the window nt belongs to. </summary>
		///
		/// <value>	The window nt groups. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string WinNTGroups{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue(false)+"";}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the local web domain. </summary>
		///
		/// <value>	The local web domain. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string LocalWebDomain{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the full pathname of the image file. </summary>
		///
		/// <value>	The full pathname of the image file. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ImagePath{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the fax e mail. </summary>
		///
		/// <value>	The fax e mail. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string FaxEMail{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the fax error e mail. </summary>
		///
		/// <value>	The fax error e mail. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string FaxErrorEMail{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the error e mail to. </summary>
		///
		/// <value>	The error e mail to. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ErrorEMailTo{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the error e mail from. </summary>
		///
		/// <value>	The error e mail from. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ErrorEMailFrom{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the mail server. </summary>
		///
		/// <value>	The mail server. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string MailServer{
			[MethodImplAttribute(MethodImplOptions.NoInlining)]
			get{
				string ms = GetConfigValue(false)+"";
				return ms == "" ? "localhost" : ms;
			}
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the mail 911. </summary>
		///
		/// <value>	The e mail 911. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string EMail911{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue(false)+"";}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the full pathname of the html file. </summary>
		///
		/// <value>	The full pathname of the html file. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string HtmlPath{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the full pathname of the menu file. </summary>
		///
		/// <value>	The full pathname of the menu file. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string MenuPath{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the credit server. </summary>
		///
		/// <value>	The credit server. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string CreditServer{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the accurint server. </summary>
		///
		/// <value>	The accurint server. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string AccurintServer{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		#region Lock ===================

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the appl lock time out. </summary>
		///
		/// <value>	The appl lock time out. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static TimeSpan ApplLockTimeOut {
			[MethodImplAttribute(MethodImplOptions.NoInlining)]
			get{
				try{
					string s = GetConfigValue();
					string[] a = s.Split(':');
					return new TimeSpan(int.Parse(a[0]),int.Parse(a[1]),int.Parse(a[2]));
				}catch(NoConfigValueException exc){
					throw new NoConfigValueException("Value Format<>HH:mm:ss"+Environment.NewLine+exc.Message);
				}
			}
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the do is locked. </summary>
		///
		/// <value>	true if do lock, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool DoLock{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return bool.Parse(GetConfigValue());}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the debug is locked. </summary>
		///
		/// <value>	true if lock debug, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool LockDebug{
			[MethodImplAttribute(MethodImplOptions.NoInlining)]
			get{
				string v = GetConfigValue(false)+"";
				return v == "" ? false : bool.Parse(v);
			}
		}
		#endregion
		
	}
	#endregion application ======================

	#region db ======================
	public class db : RegistryBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the database server. </summary>
		///
		/// <value>	The database server. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string dbServer{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the name of the database. </summary>
		///
		/// <value>	The name of the database. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string dbName { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the database name afc. </summary>
		///
		/// <value>	The database name afc. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string dbName_AFC { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the connection. </summary>
		///
		/// <value>	The connection. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string conn	 {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the connection a do. </summary>
		///
		/// <value>	The connection a do. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string connADO {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the connection images. </summary>
		///
		/// <value>	The connection images. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string connImages {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the application filter. </summary>
		///
		/// <value>	The application filter. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplicationFilter {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the appl identifier security. </summary>
		///
		/// <value>	The appl identifier security. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplIDSec {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the add appl sp. </summary>
		///
		/// <value>	The add appl sp. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string AddApplSP {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the appl information view. </summary>
		///
		/// <value>	The appl information view. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplInfoView {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the identifier of the appl. </summary>
		///
		/// <value>	The identifier of the appl. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplID { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the identifier of the menu. </summary>
		///
		/// <value>	The identifier of the menu. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string MenuID { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the applicant borrower table. </summary>
		///
		/// <value>	The applicant borrower table. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplicantBorrowerTable {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the name of the appl. </summary>
		///
		/// <value>	The name of the appl. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplName {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the identifier of the next menus by. </summary>
		///
		/// <value>	The identifier of the next menus by. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string NextMenusByID {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the database name images. </summary>
		///
		/// <value>	The database name images. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string dbName_Images { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the database name images afc. </summary>
		///
		/// <value>	The database name images afc. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string dbName_Images_AFC { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the database name gl. </summary>
		///
		/// <value>	The database name gl. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string dbName_GL				 {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the name of the where sp. </summary>
		///
		/// <value>	The name of the where sp. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string WhereSpName{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the update timeout. </summary>
		///
		/// <value>	The update timeout. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static int UpdateTimeout{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return int.Parse(GetConfigValue());}}
	}
	#endregion db ======================

	#region Company ======================
	public class Company : RegistryBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the name of the full. </summary>
		///
		/// <value>	The name of the full. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string FullName{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the name of the short. </summary>
		///
		/// <value>	The name of the short. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ShortName{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the street. </summary>
		///
		/// <value>	The street. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Street{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the city. </summary>
		///
		/// <value>	The city. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string City{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the state. </summary>
		///
		/// <value>	The state. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string State{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the zip. </summary>
		///
		/// <value>	The zip. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Zip{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the phone. </summary>
		///
		/// <value>	The phone. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Phone{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the fax. </summary>
		///
		/// <value>	The fax. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Fax{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}
	}
	#endregion Company ======================

	#region GL =====================
	public class GL : RegistryBase {

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Pq. </summary>
		///
		/// <remarks>	Dimon, 11/24/2010. </remarks>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public class PQ {
			public static string Suffix { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return GetConfigValue(false) + ""; } }
		}
	}
	#endregion

	#region ADS ======================
	public class ADS : RegistryBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	_Groups. </summary>
		///
		/// <value>	The name of the groups ou. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string GroupsOUName{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	OU=WEB,OU=Groups. </summary>
		///
		/// <value>	The web dn. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string WebDN{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	OU=application.AppSpace,WebDN. </summary>
		///
		/// <value>	The application dn. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ApplicationDN{get{return "OU="+application.AppSpace+","+WebDN;}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	OU=GroupsOUName,ApplicationDN. </summary>
		///
		/// <value>	The application groups dn. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string AppGroupsDN {get{return "OU="+GroupsOUName+","+ApplicationDN;}}
	}
	#endregion ADS ======================
}
